package com.aaa.dang.modules.system.service;

import com.aaa.dang.common.entity.Employee;
import com.aaa.dang.common.util.ResultModel;

import java.util.Map;

/**
 * 员工表业务接口层
 *
 * @author Dadazhao
 * @date 2018/12/14
 */
public interface IEmployeeService {

    /**
     * 得到所有的员工(未假删除)
     *
     * @param query 查询条件
     * @return 所有的员工
     */
    ResultModel getEmployeeAll(Map<String, Object> query);

    /**
     * 修改员工账号状态
     *
     * @param id     员工编号
     * @param status 状态 0 启用 1 禁用
     * @return code 成功 0 失败 1
     */
    ResultModel updateEmployeeStatus(Integer id, Integer status);

    /**
     * 员工假删除
     *
     * @param ids      员工id 数组
     * @param isDelete 假删除 0 为正常 1 为删除
     * @return code 成功 0 失败 1
     */
    ResultModel updateEmployeeIsDelete(Integer[] ids, int isDelete);

    /**
     * 添加员工
     *
     * @param emp   员工实体
     * @param roles 角色id数组
     * @return code 成功 0 失败 1
     */
    ResultModel addEmployee(Employee emp, Integer[] roles);

    /**
     * 获得当前id拥有的角色
     *
     * @param id 员工id
     * @return 拥有的权限
     */
    ResultModel getHaveRole(Integer id);

    /**
     * 修改员工信息 不包括角色
     *
     * @param emp 员工实体
     * @return code 0 成功 1 失败
     */
    public ResultModel updateEmployee(Employee emp);

    /**
     * 修改员工信息&拥有角色信息
     *
     * @param emp   员工实体
     * @param roles 角色id 数组
     * @return code 成功 0 失败 1
     */
    ResultModel updateEmployee(Employee emp, Integer[] roles);

    /**
     * 通过员工账号获得员工信息
     *
     * @param username 登录账号
     * @return 员工信息
     */
    Employee getEmployeeByName(String username);

    /**
     * 登录名唯一校验
     *
     * @param emp 员工实体
     * @return code 成功 0 失败 1
     */
    ResultModel isExistLoginName(Employee emp);

    /**
     * 通过id删除员工
     *
     * @param ids 员工id 数组
     * @return code 成功 0 失败 1
     */
    ResultModel deleteEmployeeById(Integer[] ids);
}
